{
                // i <<= x  is equivalent to  i = i << x
                match &*binary.left {
                    Expression::Variable(var_name) => {
                        if let Some(var_alloca) = self.variable_map.get(var_name).cloned() {
                            if var_alloca.is_pointer_value() {
                                let ptr = var_alloca.into_pointer_value();
                                // Load current value
                                let var_type =
                                    self.variable_type_map.get(var_name).ok_or_else(|| {
                                        CompilerError::internal("Variable type not found")
                                    })?;
                                let llvm_type =
                                    self.nrc_type_to_llvm_type(&Some(var_type.clone()))?;
                                let current_value =
                                    self.builder.build_load(llvm_type, ptr, var_name)?;

                                // Perform left shift
                                let new_value = match (current_value, right) {
                                    (BasicValueEnum::IntValue(l), BasicValueEnum::IntValue(r)) => {
                                        Ok(self
                                            .builder
                                            .build_left_shift(l, r, "leftshift_result")?
                                            .into())
                                    }
                                    _ => {
                                        Err(CompilerError::internal("Type mismatch in left shift"))
                                    }
                                }?;

                                // Store back
                                let _ = self.builder.build_store(ptr, new_value);
                                Ok(new_value)
                            } else {
                                Err(CompilerError::internal("Variable is not a pointer"))
                            }
                        } else {
                            Err(CompilerError::internal(&format!(
                                "Undefined variable: {}",
                                var_name
                            )))
                        }
                    }
                    _ => Err(CompilerError::internal(
                        "LeftShiftAssign only supports variable targets",
                    )),
                }
            }
